|
|
1. Формат GIF. Применение и возможности |
|
|
2. Стандарты GIF87a и GIF89a. Особенности и характеристики |
|
|
3. Структура анимированного файла GIF89a |
|
|
4. Создание анимаций |
![]() |
![]() |
| (254x226) - 14 523 байт | с 12 кадрами - 11 709 байт |
Размер файла
Если перед Вами не стоят определённые рамки, в которые нужно "вписать" анимированный GIF, то
попробуйте представить каким максимальным размером в одном из кадров он будет.
Например в файле с лошадкой можно обрезать крайние границы без ущерба для анимации в целом.
Обрежем сверху 8, слева 4 и справа 19 пикселей.
![]() |
| (231x218) - 14 322 байт |
Количество кадров
Можно уменьшить вес файла, если сократить количество кадров. Чем больше кадров в анимации
использовать, тем тяжелее будет файл. Если возможно уместить анимацию в 8-и кадрах в место 12-и,
8 и используйте. В примере с мячиком вырезано 4-ре кадра. Мячик по прежнему отскакивает от стенок
(пусть не так плавно). Но размер уменьшился прилично.
![]() |
| с 8 кадрами - 8 081 байт |
Оптимизация палитры и уменьшение количества цветов
Уже в процессе работы над исходными кадрами следует подумать о сокращении размера будущего файла.
Постарайтесь не включать в анимацию большое количество цветов. Желательно оптимизировать размер
палитры кадров до включения в анимированный GIF-файл.
Формат GIF 89A предусматривает хранение информации обо всех цветах анимации, либо в единой
глобальной палитре, либо в последовательности локальных палитр. Надо исключить локальные палитры.
Применение единой глобальной палитры для всей анимации означает, что цвета согласованы между
кадрами.
Простого сокращения числа оттенков, составляющих изображение, как правило, недостаточно:
необходимо уменьшить соответствующее значение в используемой файлом цветовой палитре. Это лучше
делать путем редактирования палитры вручную, а не с помощью стандартных средств, поскольку в этом
случае автоматическое уменьшение, скорее всего приведет к некорректной замене некоторых оттенков
участком из нескольких используемых цветов. Необходимо на глаз определить количество составляющих
рисунок оттенков, после чего откорректировать элементы палитры.
Чем меньше цветов в палитре, тем короче файлы. Для хранения небольших палитр требуется меньше
места. Так для палитры из 16 цветов требуется только 4 бита, тогда как для палитры из 128 цветов
уже 7 битов.
Изображения, составленные из однородно окрашенных участков (особенно текст, логотипы и
компьютерная графика), лучше работают с небольшими палитрами. При создании анимированных
GIF-изображений не стоит применять фотографии или файлы с градиентной заливкой, поскольку они
содержат множество различных цветов, что увеличивает размер палитры.
![]() |
![]() |
| Размер файла - 14 322 байт |
Палитра для лошадки занимает 256 цвета и размер палитры на 256 цветов (8 бит). Но если внимательно посмотреть, то можно обойтись 16-ю цветами и 16-ти цветной палитрой, которая занимает 4 бита.
![]() |
|
| Размер файла - 11 142 байт |
Слои в анимации
Можно получать GIF-файлы поразительно малых размеров, если воспользоваться двумя возможностями
данного формата: в GIF-файлах допускается наличие прозрачных участков и задание способа
перерисовки или очистки каждого кадра анимации. Если создавать анимацию, просто накладывая слои с
новым изображением поверх старого, причем допускать просвечивание фрагментов предыдущего кадра,
можно формировать кадры с протяженными прозрачными участками. Прозрачные области хорошо
упаковываются, поскольку в алгоритме сжатия они рассматриваются как участки сплошного однородного
цвета.
В примере с лошадью изменяется только положение головы и хвоста, а туловище и лужайка остаются
неподвижными. Поэтому во 2, 3 и 4 кадрах неподвижную область сделаем прозрачной.
Посмотрим, на сколько уменьшилось изображение.
| Кадры 2, 3 с прозрачными областями. | |
![]() |
![]() |
| Первоначальная анимация. | Конечная анимация. |
![]() |
![]() |
| Размер - 11 342 байт | Размер - 8 499 байт |
Но такой способ применим только для непрозрачных картинок.
Отсечение избыточных частей изображения
На первом кадре GIF-анимации обычно определяются полные размеры изображения, а последующие кадры
могут быть меньше. Более того, их можно размещать в любом месте в пределах границ первого кадра,
задавая относительные координаты Х и Y. Таким образом удается отсечь избыточные данные об
изображении и уменьшить полный размер файла. Например, в картинке с лошадью можно уменьшить
размер кадров, т.е. обрезать ненужные прозрачные области и задать смещение.
| Первоначальная анимация. | Конечная анимация. |
![]() |
![]() |
| Размер - 8 499 байт | Размер - 7 957 байт |
Структура файла
Чтобы эффективно оптимизировать, нужно хоть немного представлять, что такое алгоритм сжатия.
Сжимается GIF перед сохранением на жёсткий диск методом LZW. Особенность этого сжатия заключается
в том, что сжатию лучше поддаются те области, которые заполнены однородным цветом, а хуже области
состоящие из набора разноцветных точек.
Например, если сделать фон полосатым в горизонтальную или вертикальную полоску, или разбить в
шахматном порядке (причем красный и белый цвет одинаков), то минимальный размер будет у файлов с
горизонтальной полоской.
Направление градиентной заливки
От направления градиентной заливки цвета тоже зависит размер файла. Изображение с горизонтальная
градиентная заливка занимает меньше места на диске, чем с вертикальной, т.к. сканирование при LZW
сжатии рисунка производится построчно. Но лучше вообще отказаться от градиентной заливки.
Удаление дополнительной информации.
Для уменьшения размера файла можно также удалить из файла текстовые комментарии и заголовки.
![]() |
![]() |
| Первоначальный размер - 14 523 байт | Размер после оптимизации - 7 957 байт |
Image Tools Group 2004г.